#ifndef COOLPOOL_SIMULATION_EXCEPTIONS_SIMOBJECTSEXCEPTIONS_H_
#define COOLPOOL_SIMULATION_EXCEPTIONS_SIMOBJECTSEXCEPTIONS_H_

#include "CoolPoolException.h"

class SimObjectException: public CoolPoolException
{
public:
	SimObjectException() throw () :
		CoolPoolException()
	{
	}

	virtual ~SimObjectException() throw ()
	{
	}

	virtual const char* what() const throw ()
	{
		return "Invalid CoolPool simulation object.";
	}
};

class NoSuchRectangleException: public SimObjectException
{
public:
	NoSuchRectangleException() throw () :
		SimObjectException()
	{
	}

	virtual ~NoSuchRectangleException() throw ()
	{
	}

	virtual const char* what() const throw ()
	{
		return "The given points do not create a valid rectangle.";
	}
};

class NoSuchBallException: public SimObjectException
{
public:
	NoSuchBallException() throw () :
		SimObjectException()
	{
	}

	virtual ~NoSuchBallException() throw ()
	{
	}

	virtual const char* what() const throw ()
	{
		return "The given parameters do not create a valid ball.";
	}
};

class UnexpectedInputException : public SimObjectException
{
public:
	UnexpectedInputException() throw () :
		SimObjectException()
	{
	}

	virtual ~UnexpectedInputException() throw ()
	{
	}

	virtual const char* what() const throw ()
	{
		return "Wrong collision detector input object.";
	}
};

#endif
